package com.spsoft.vatoutinv.enums;

import java.util.ArrayList;
import java.util.List;

/**
 * 数据校验枚举类
 *
 * @author : chenxudong
 * @date : 2023/12/6 17:24
 */
public enum CheckParamEnum {

    // 发票主信息 Excel导入数据校验
    CHECK_VMSMANUALBASEEXCEL_GMFZRRBZ("VmsManualBaseExcel", "gmfzrrbz", "购买方是否为自然人", true, true, 0),

    CHECK_VMSMANUALBASEEXCEL_GMFMC("VmsManualBaseExcel", "gmfmc", "购方名称", true, false, 300),

    CHECK_VMSMANUALBASEEXCEL_GMFNSRSBH("VmsManualBaseExcel", "gmfnsrsbh", "购方纳税人识别号", false, false, 20),

    CHECK_VMSMANUALBASEEXCEL_TDYS("VmsManualBaseExcel", "tdys", "特定要素", false, true, 0),

    CHECK_VMSMANUALBASEEXCEL_DHLX("VmsManualBaseExcel", "dhlx", "单号类型", false, true, 0),

    CHECK_VMSMANUALBASEEXCEL_DH("VmsManualBaseExcel", "dh", "单号", false, false, 255),

    CHECK_VMSMANUALBASEEXCEL_BZ("VmsManualBaseExcel", "bz", "备注", false, false, 450),



    // 发票非必填扩展信息 Excel导入数据校验
    CHECK_VMSMANUALEXTENDEXCEL_ZZSJZJTDM("VmsManualExtendExcel", "zzsjzjtdm", "增值税即征即退代码", false, true, 0),

    CHECK_VMSMANUALEXTENDEXCEL_SGFPLXDM("VmsManualExtendExcel", "sgfplxdm", "收购发票类型代码", false, true, 0),

    CHECK_VMSMANUALEXTENDEXCEL_CKYWSYZCDM("VmsManualExtendExcel", "ckywsyzcdm", "出口业务适用政策代码", false, true, 0),

    CHECK_VMSMANUALEXTENDEXCEL_GMFDZ("VmsManualExtendExcel", "gmfdz", "购方地址", false, false, 300),

    CHECK_VMSMANUALEXTENDEXCEL_GMFDH("VmsManualExtendExcel", "gmfdh", "购方电话", false, false, 60),

    CHECK_VMSMANUALEXTENDEXCEL_GMFKHH("VmsManualExtendExcel", "gmfkhh", "购方开户行", false, false, 120),

    CHECK_VMSMANUALEXTENDEXCEL_GMFZH("VmsManualExtendExcel", "gmfzh", "购买方账号", false, false, 50),

    CHECK_VMSMANUALEXTENDEXCEL_SFZSGMFYHZHBQ("VmsManualExtendExcel", "sfzsgmfyhzhbq", "是否展示购买方银行账号标签", false, true, 0),

    CHECK_VMSMANUALEXTENDEXCEL_GMFJBR("VmsManualExtendExcel", "gmfjbr", "购买方经办人姓名", false, false, 150),

    CHECK_VMSMANUALEXTENDEXCEL_JBRSFZJHM("VmsManualExtendExcel", "jbrsfzjhm", "购买方经办人证件号码", false, false, 30),

    CHECK_VMSMANUALEXTENDEXCEL_GMFJBRLXDH("VmsManualExtendExcel", "gmfjbrlxdh", "购买方经办人联系电话", false, false, 60),

    CHECK_VMSMANUALEXTENDEXCEL_XSFDZ("VmsManualExtendExcel", "xsfdz", "销售方地址", false, false, 300),

    CHECK_VMSMANUALEXTENDEXCEL_XSFDH("VmsManualExtendExcel", "xsfdh", "销售方电话", false, false, 60),

    CHECK_VMSMANUALEXTENDEXCEL_XSFKHH("VmsManualExtendExcel", "xsfkhh", "销售方开户行", false, false, 120),

    CHECK_VMSMANUALEXTENDEXCEL_XSFZH("VmsManualExtendExcel", "xsfzh", "销售方账号", false, false, 50),

    CHECK_VMSMANUALEXTENDEXCEL_SFZSXSFYHZHBQ("VmsManualExtendExcel", "sfzsxsfyhzhbq", "是否展示销售方银行账号标签", false, true, 0),

    CHECK_VMSMANUALEXTENDEXCEL_SKYHMC("VmsManualExtendExcel", "skyhmc", "收款银行名称", false, false, 120),

    CHECK_VMSMANUALEXTENDEXCEL_SKYHZH("VmsManualExtendExcel", "skyhzh", "收款银行账号", false, false, 100),

    CHECK_VMSMANUALEXTENDEXCEL_JSFS("VmsManualExtendExcel", "jsfs", "结算方式", false, true, 0),

    CHECK_VMSMANUALEXTENDEXCEL_KPRZJLX("VmsManualExtendExcel", "kprzjlx", "开票人证件类型", false, true, 0),

    CHECK_VMSMANUALEXTENDEXCEL_KPRZJHM("VmsManualExtendExcel", "kprzjhm", "开票人证件号码", false, false, 30),

    CHECK_VMSMANUALEXTENDEXCEL_SKRXM("VmsManualExtendExcel", "skrxm", "收款人姓名", false, false, 16),

    CHECK_VMSMANUALEXTENDEXCEL_FHRXM("VmsManualExtendExcel", "fhrxm", "复核人姓名", false, false, 16),

    CHECK_VMSMANUALEXTENDEXCEL_QYDM("VmsManualExtendExcel", "qydm", "区域代码", false, false, 20),

    CHECK_VMSMANUALEXTENDEXCEL_YSXWFSD("VmsManualExtendExcel", "ysxwfsd", "应税行为发生地", false, false, 11),

    CHECK_VMSMANUALEXTENDEXCEL_FJYSMC("VmsManualExtendExcel", "fjysmc", "附加要素名称", false, false, 200),

    CHECK_VMSMANUALEXTENDEXCEL_FJYSLX("VmsManualExtendExcel", "fjyslx", "附加要素类型", false, false, 200),

    CHECK_VMSMANUALEXTENDEXCEL_FJYSZ("VmsManualExtendExcel", "fjysz", "附加要素值", false, false, 200),



    // 发票明细信息 Excel导入数据校验
    CHECK_VMSMANUALDETAILEXCEL_CPBM("VmsManualDetailExcel", "cpbm", "企业商品及服务编码", true, false, 100),

    CHECK_VMSMANUALDETAILEXCEL_FPHXZ("VmsManualDetailExcel", "fphxz", "发票行性质", false, true, 0),

    CHECK_VMSMANUALDETAILEXCEL_SPHFWSSFLHBBM("VmsManualDetailExcel", "sphfwssflhbbm", "税收分类编码", false, false, 19),

    CHECK_VMSMANUALDETAILEXCEL_XMMC("VmsManualDetailExcel", "xmmc", "项目名称", false, false, 600),

    CHECK_VMSMANUALDETAILEXCEL_GGXH("VmsManualDetailExcel", "ggxh", "规格型号", false, false, 150),

    CHECK_VMSMANUALDETAILEXCEL_DW("VmsManualDetailExcel", "dw", "计量单位", false, false, 300),

    CHECK_VMSMANUALDETAILEXCEL_SL("VmsManualDetailExcel", "sl", "数量", false, false, 25),

    CHECK_VMSMANUALDETAILEXCEL_DJ("VmsManualDetailExcel", "dj", "单价", false, false, 25),

    CHECK_VMSMANUALDETAILEXCEL_JE("VmsManualDetailExcel", "je", "金额", true, false, "16,2"),

    CHECK_VMSMANUALDETAILEXCEL_KCE("VmsManualDetailExcel", "kce", "扣除额", false, false, "16,2"),

    CHECK_VMSMANUALDETAILEXCEL_SLV("VmsManualDetailExcel", "slv", "税率/征税率", true, false, "10,6"),

    CHECK_VMSMANUALDETAILEXCEL_SE("VmsManualDetailExcel", "se", "税额", true, false, "16,2"),

    CHECK_VMSMANUALDETAILEXCEL_JSFF("VmsManualDetailExcel", "jsff", "计税方法", false, true, 0),

    CHECK_VMSMANUALDETAILEXCEL_ZSXM("VmsManualDetailExcel", "zsxm", "征税项目", false, true, 0),

    CHECK_VMSMANUALDETAILEXCEL_YHZCBS("VmsManualDetailExcel", "yhzcbs", "优惠政策标识", false, true, 0),



    // 发票特定业务信息 Excel导入数据校验
    CHECK_VMSMANUALTDYWEXCEL_BDCZLDZS("VmsManualTdywExcel", "bdczldzS", "不动产坐落地址（省）", false, false, 20),

    CHECK_VMSMANUALTDYWEXCEL_BDCZLDZS1("VmsManualTdywExcel", "bdczldzS1", "不动产坐落地址（市）", false, false, 20),

    CHECK_VMSMANUALTDYWEXCEL_BDCZLDZXXDZ("VmsManualTdywExcel", "bdczldzXxdz", "不动产坐落地址（详细地址）", false, false, 80),

    CHECK_VMSMANUALTDYWEXCEL_ZLQQZ("VmsManualTdywExcel", "zlqqz", "租赁期起止", false, false, 40),

    CHECK_VMSMANUALTDYWEXCEL_KDSBZ("VmsManualTdywExcel", "kdsbz", "跨地（市）标志", false, true, 0),

    CHECK_VMSMANUALTDYWEXCEL_CQZSBH("VmsManualTdywExcel", "cqzsbh", "产权证书/不动产权证号", false, false, 40),

    CHECK_VMSMANUALTDYWEXCEL_BDCDWDM("VmsManualTdywExcel", "bdcdwdm", "不动产单位代码", false, false, 28),

    CHECK_VMSMANUALTDYWEXCEL_WQHTBABH("VmsManualTdywExcel", "wqhtbabh", "网签合同备案编号", false, false, 28),

    CHECK_VMSMANUALTDYWEXCEL_TDZZSXMBH("VmsManualTdywExcel", "tdzzsxmbh", "土地增值税项目编号", false, false, 16),

    CHECK_VMSMANUALTDYWEXCEL_HDJSJG("VmsManualTdywExcel", "hdjsjg", "核定计税价格", false, false, "16,2"),

    CHECK_VMSMANUALTDYWEXCEL_SJCJHSJE("VmsManualTdywExcel", "sjcjhsje", "实际成交含税金额", false, false, "16,2"),

    CHECK_VMSMANUALTDYWEXCEL_MJDW("VmsManualTdywExcel", "mjdw", "面积单位", false, false, 300),

    CHECK_VMSMANUALTDYWEXCEL_DFGTGMBZ("VmsManualTdywExcel", "dfgtgmbz", "多方共同购买标志", false, true, 0),

    CHECK_VMSMANUALTDYWEXCEL_GTGMF("VmsManualTdywExcel", "gtgmf", "共同购买方", false, false, 100),

    CHECK_VMSMANUALTDYWEXCEL_ZJLX("VmsManualTdywExcel", "zjlx", "证件类型", false, true, 0),

    CHECK_VMSMANUALTDYWEXCEL_ZJHM("VmsManualTdywExcel", "zjhm", "证件号码", false, false, 20),

    CHECK_VMSMANUALTDYWEXCEL_CXRXH("VmsManualTdywExcel", "cxrxh", "出行人序号", false, false, 8),

    CHECK_VMSMANUALTDYWEXCEL_CXR("VmsManualTdywExcel", "cxr", "出行人", false, false, 20),

    CHECK_VMSMANUALTDYWEXCEL_CXRZJLXDM("VmsManualTdywExcel", "cxrzjlxdm", "出行人证件类型", false, true, 0),

    CHECK_VMSMANUALTDYWEXCEL_SFZJHM("VmsManualTdywExcel", "sfzjhm", "有效身份证件号", false, false, 20),

    CHECK_VMSMANUALTDYWEXCEL_CHUXRQ("VmsManualTdywExcel", "chuxrq", "出行日期", false, false, 10),

    CHECK_VMSMANUALTDYWEXCEL_CFD("VmsManualTdywExcel", "cfd", "旅客出发地", false, false, 80),

    CHECK_VMSMANUALTDYWEXCEL_DDD("VmsManualTdywExcel", "ddd", "旅客到达地", false, false, 80),

    CHECK_VMSMANUALTDYWEXCEL_JTGJLXDM("VmsManualTdywExcel", "jtgjlxdm", "交通工具类型", false, true, 0),

    CHECK_VMSMANUALTDYWEXCEL_ZWDJ("VmsManualTdywExcel", "zwdj", "座位等级", false, false, 20),




    // 手工开票-发票主信息数据校验
    CHECK_VMSMANUALBASEDTO_FPPZ("fppz", "发票票种", false, false, 2),

    CHECK_VMSMANUALBASEDTO_CEZSLXDM("cezslxdm", "差额征税类型代码", false, false, 2),

    CHECK_VMSMANUALBASEDTO_JEMS("jems", "金额模式", true, false, 2),

    CHECK_VMSMANUALBASEDTO_TDYS("tdys", "特定要素", false, false, 2),

    CHECK_VMSMANUALBASEDTO_DHLX("dhlx", "单号类型", false, false, 2),

    CHECK_VMSMANUALBASEDTO_DH("dh", "单号", false, false, 255),

    CHECK_VMSMANUALBASEDTO_BZ("bz", "备注", false, false, 450),

    CHECK_VMSMANUALBASEDTO_GMFMC("gmfmc", "购方名称", true, false, 300),

    CHECK_VMSMANUALBASEDTO_GMFNSRSBH("gmfnsrsbh", "购方纳税人识别号", false, false, 20),

    CHECK_VMSMANUALBASEDTO_XSFMC("xsfmc", "销售方名称", true, false, 300),

    CHECK_VMSMANUALBASEDTO_XSFNSRSBH("xsfnsrsbh", "销售方纳税人识别号", true, false, 20),

    CHECK_VMSMANUALBASEDTO_HJJE("hjje", "合计金额", true, false, "16,2"),

    CHECK_VMSMANUALBASEDTO_HJSE("hjse", "合计税额", true, false, "16,2"),

    CHECK_VMSMANUALBASEDTO_JSHJ("jshj", "价税合计", false, false, "16,2"),

    CHECK_VMSMANUALBASEDTO_KPR("kpr", "开票人", true, false, 300),



    // 手工开票-发票非必填扩展信息数据校验
    CHECK_VMSMANUALEXTENDDTO_ZZSJZJTDM("zzsjzjtdm", "增值税即征即退代码", false, false, 2),

    CHECK_VMSMANUALEXTENDDTO_SGFPLXDM("sgfplxdm", "收购发票类型代码", false, false, 2),

    CHECK_VMSMANUALEXTENDDTO_CKYWSYZCDM("ckywsyzcdm", "出口业务适用政策代码", false, false, 2),

    CHECK_VMSMANUALEXTENDDTO_GMFDZ("gmfdz", "购方地址", false, false, 300),

    CHECK_VMSMANUALEXTENDDTO_GMFDH("gmfdh", "购方电话", false, false, 60),

    CHECK_VMSMANUALEXTENDDTO_GMFKHH("gmfkhh", "购方开户行", false, false, 120),

    CHECK_VMSMANUALEXTENDDTO_GMFZH("gmfzh", "购买方账号", false, false, 50),

    CHECK_VMSMANUALEXTENDDTO_GMFJBR("gmfjbr", "购买方经办人姓名", false, false, 150),

    CHECK_VMSMANUALEXTENDDTO_JBRSFZJHM("jbrsfzjhm", "购买方经办人证件号码", false, false, 30),

    CHECK_VMSMANUALEXTENDDTO_GMFJBRLXDH("gmfjbrlxdh", "购买方经办人联系电话", false, false, 60),

    CHECK_VMSMANUALEXTENDDTO_GMFZRRBZ("gmfzrrbz", "购买方自然人标志", true, false, 2),

    CHECK_VMSMANUALEXTENDDTO_XSFDZ("xsfdz", "销售方地址", false, false, 300),

    CHECK_VMSMANUALEXTENDDTO_XSFDH("xsfdh", "销售方电话", false, false, 60),

    CHECK_VMSMANUALEXTENDDTO_XSFKHH("xsfkhh", "销售方开户行", false, false, 120),

    CHECK_VMSMANUALEXTENDDTO_XSFZH("xsfzh", "销售方账号", false, false, 50),

    CHECK_VMSMANUALEXTENDDTO_SKYHMC("skyhmc", "收款银行名称", false, false, 120),

    CHECK_VMSMANUALEXTENDDTO_SKYHZH("skyhzh", "收款银行账号", false, false, 100),

    CHECK_VMSMANUALEXTENDDTO_JSFS("jsfs", "结算方式", false, false, 2),

    CHECK_VMSMANUALEXTENDDTO_KPRZJLX("kprzjlx", "开票人证件类型", false, false, 4),

    CHECK_VMSMANUALEXTENDDTO_KPRZJHM("kprzjhm", "开票人证件号码", false, false, 30),

    CHECK_VMSMANUALEXTENDDTO_SKRXM("skrxm", "收款人姓名", false, false, 16),

    CHECK_VMSMANUALEXTENDDTO_FHRXM("fhrxm", "复核人姓名", false, false, 16),

    CHECK_VMSMANUALEXTENDDTO_QYDM("qydm", "区域代码", false, false, 20),

    CHECK_VMSMANUALEXTENDDTO_YSXWFSD("ysxwfsd", "应税行为发生地", false, false, 11),



    // 手工开票-发票明细信息数据校验
    CHECK_VMSMANUALDETAILDTO_FPHXZ("fphxz", "发票行性质", true, false, 2),

    CHECK_VMSMANUALDETAILDTO_SPHFWSSFLHBBM("sphfwssflhbbm", "税收分类编码", true, false, 19),

    CHECK_VMSMANUALDETAILDTO_XMMC("xmmc", "项目名称", true, false, 600),

    CHECK_VMSMANUALDETAILDTO_GGXH("ggxh", "规格型号", false, false, 150),

    CHECK_VMSMANUALDETAILDTO_DW("dw", "计量单位", false, false, 300),

    CHECK_VMSMANUALDETAILDTO_SL("sl", "数量", false, false, 25),

    CHECK_VMSMANUALDETAILDTO_DJ("dj", "单价", false, false, 25),

    CHECK_VMSMANUALDETAILDTO_JE("je", "金额", true, false, "16,2"),

    CHECK_VMSMANUALDETAILDTO_KCE("kce", "扣除额", false, false, "16,2"),

    CHECK_VMSMANUALDETAILDTO_SLV("slv", "税率/征税率", true, false, "10,6"),

    CHECK_VMSMANUALDETAILDTO_SE("se", "税额", true, false, "16,2"),

    CHECK_VMSMANUALDETAILDTO_JSFF("jsff", "计税方法", true, false, 2),

    CHECK_VMSMANUALDETAILDTO_ZSXM("zsxm", "征税项目", true, false, 2),

    CHECK_VMSMANUALDETAILDTO_YHZCBS("yhzcbs", "优惠政策标识", false, false, 2),



    // 手工开票-发票附加要素信息数据校验
    CHECK_VMSMANUALADDDTO_FJYSMC("fjysmc", "附加要素名称", false, false, 200),

    CHECK_VMSMANUALADDDTO_FJYSLX("fjyslx", "附加要素类型", false, false, 200),

    CHECK_VMSMANUALADDDTO_FJYSZ("fjysz", "附加要素值", false, false, 200),



    // 手工开票-发票特定业务信息数据校验
    CHECK_VMSMANUALTDYWDTO_BDCZLDZS("bdczldzS", "不动产坐落地址（省）", false, false, 20),

    CHECK_VMSMANUALTDYWDTO_BDCZLDZS1("bdczldzS1", "不动产坐落地址（市）", false, false, 20),

    CHECK_VMSMANUALTDYWDTO_BDCZLDZXXDZ("bdczldzXxdz", "不动产坐落地址（详细地址）", false, false, 80),

    CHECK_VMSMANUALTDYWDTO_ZLQQZ("zlqqz", "租赁期起止", false, false, 40),

    CHECK_VMSMANUALTDYWDTO_KDSBZ("kdsbz", "跨地（市）标志", false, false, 1),

    CHECK_VMSMANUALTDYWDTO_CQZSBH("cqzsbh", "产权证书/不动产权证号", false, false, 40),

    CHECK_VMSMANUALTDYWDTO_BDCDWDM("bdcdwdm", "不动产单位代码", false, false, 28),

    CHECK_VMSMANUALTDYWDTO_WQHTBABH("wqhtbabh", "网签合同备案编号", false, false, 28),

    CHECK_VMSMANUALTDYWDTO_TDZZSXMBH("tdzzsxmbh", "土地增值税项目编号", false, false, 16),

    CHECK_VMSMANUALTDYWDTO_HDJSJG("hdjsjg", "核定计税价格", false, false, "16,2"),

    CHECK_VMSMANUALTDYWDTO_SJCJHSJE("sjcjhsje", "实际成交含税金额", false, false, "16,2"),

    CHECK_VMSMANUALTDYWDTO_MJDW("mjdw", "面积单位", false, false, 300),

    CHECK_VMSMANUALTDYWDTO_DFGTGMBZ("dfgtgmbz", "多方共同购买标志", false, false, 1),

    CHECK_VMSMANUALTDYWDTO_GTGMF("gtgmf", "共同购买方", false, false, 100),

    CHECK_VMSMANUALTDYWDTO_ZJLX("zjlx", "证件类型", false, false, 3),

    CHECK_VMSMANUALTDYWDTO_ZJHM("zjhm", "证件号码", false, false, 20),

    CHECK_VMSMANUALTDYWDTO_CXRXH("cxrxh", "出行人序号", false, false, 8),

    CHECK_VMSMANUALTDYWDTO_CXR("cxr", "出行人", false, false, 20),

    CHECK_VMSMANUALTDYWDTO_CXRZJLXDM("cxrzjlxdm", "出行人证件类型", false, false, 20),

    CHECK_VMSMANUALTDYWDTO_SFZJHM("sfzjhm", "有效身份证件号", false, false, 20),

    CHECK_VMSMANUALTDYWDTO_CHUXRQ("chuxrq", "出行日期", false, false, 10),

    CHECK_VMSMANUALTDYWDTO_CFD("cfd", "旅客出发地", false, false, 80),

    CHECK_VMSMANUALTDYWDTO_DDD("ddd", "旅客到达地", false, false, 80),

    CHECK_VMSMANUALTDYWDTO_JTGJLXDM("jtgjlxdm", "交通工具类型", false, false, 80),

    CHECK_VMSMANUALTDYWDTO_ZWDJ("zwdj", "座位等级", false, false, 20),



    // 手工开票-发票差额扣除信息数据校验
    CHECK_VMSMANUALCEKCDTO_PZLX("pzlx", "凭证类型", false, false, 2),

    CHECK_VMSMANUALCEKCDTO_FPDM("fpdm", "发票代码", false, false, 12),

    CHECK_VMSMANUALCEKCDTO_FPHM("fphm", "发票号码", false, false, 20),

    CHECK_VMSMANUALCEKCDTO_CEPZHM("cepzhm", "差额凭证号码", false, false, 20),

    CHECK_VMSMANUALCEKCDTO_KJRQ("kjrq", "开具日期", false, false, 10),

    CHECK_VMSMANUALCEKCDTO_PZHJJE("pzhjje", "凭证合计金额", false, false, "16,2"),

    CHECK_VMSMANUALCEKCDTO_BCKCJE("bckcje", "本次扣除金额", false, false, "16,2"),

    CHECK_VMSMANUALCEKCDTO_BZ("bz", "备注", false, false, 100),


    // 公共开票接口-发票主信息数据校验
    CHECK_VMS_FULL_OUTINVOICEDETAILS_JEMS("jems", "金额模式", true, 2),

    CHECK_VMS_FULL_OUTINVOICEDETAILS_LZFPBZ("lzfpbz", "蓝字发票标志", true, 1),

    CHECK_VMS_FULL_OUTINVOICEDETAILS_PTBH("ptbh", "平台编号", true, 20),

    CHECK_VMS_FULL_OUTINVOICEDETAILS_FPPZ("fppz", "发票票种", true, 2),

    CHECK_VMS_FULL_OUTINVOICEDETAILS_DHLX("dhlx", "单号类型", false, 2),

    CHECK_VMS_FULL_OUTINVOICEDETAILS_DH("dh", "单号", false, 255),

    CHECK_VMS_FULL_OUTINVOICEDETAILS_TDYS("tdys", "特定要素", false, 2),

    CHECK_VMS_FULL_OUTINVOICEDETAILS_CEZSLXDM("cezslxdm", "差额征税类型代码", false, 2),

    CHECK_VMS_FULL_OUTINVOICEDETAILS_GMFMC("gmfmc", "购买方名称", true, 300),

    CHECK_VMS_FULL_OUTINVOICEDETAILS_GMFNSRSBH("gmfnsrsbh", "购买方纳税人识别号", false, 20),

    CHECK_VMS_FULL_OUTINVOICEDETAILS_XSFMC("xsfmc", "销售方名称", true, 300),

    CHECK_VMS_FULL_OUTINVOICEDETAILS_XSFNSRSBH("xsfnsrsbh", "销售方纳税人识别号", true, 20),

    CHECK_VMS_FULL_OUTINVOICEDETAILS_HJJE("hjje", "合计金额", true, "16,2"),

    CHECK_VMS_FULL_OUTINVOICEDETAILS_HJSE("hjse", "合计税额", true, "16,2"),

    CHECK_VMS_FULL_OUTINVOICEDETAILS_JSHJ("jshj", "价税合计", true, "16,2"),

    CHECK_VMS_FULL_OUTINVOICEDETAILS_KPR("kpr", "开票人", true, 300),

    CHECK_VMS_FULL_OUTINVOICEDETAILS_DYLZFPHM("dylzfphm", "对应蓝字发票号码", false, 20),

    CHECK_VMS_FULL_OUTINVOICEDETAILS_HZQRXXDBH("hzqrxxdbh", "红字确认信息单编号", false, 20),

    CHECK_VMS_FULL_OUTINVOICEDETAILS_HZQRDUUID("hzqrduuid", "红字确认单uuid", false, 32),

    CHECK_VMS_FULL_OUTINVOICEDETAILS_BZ("bz", "备注", false, 450),

    CHECK_VMS_FULL_OUTINVOICEDETAILS_QYDJID("qydjid", "交易机构", true, 50),

    CHECK_VMS_FULL_OUTINVOICEDETAILS_ZFCHYY("zfchyy", "作废红冲原因", false, 50),

    CHECK_VMS_FULL_OUTINVOICEDETAILS_SJLY("sjly", "数据来源", true, 2),

    CHECK_VMS_FULL_OUTINVOICEDETAILS_PPZT("ppzt", "匹配状态", true, 2),

    CHECK_VMS_FULL_OUTINVOICEDETAILS_SFBDC("sfbdc", "是否不动产", true, 2),

    CHECK_VMS_FULL_OUTINVOICEDETAILS_ZSFS("zsfs", "征税方式", true, 2),

    CHECK_VMS_FULL_OUTINVOICEDETAILS_CREATBY("creatBy", "创建人", true, 50),


    // 公共开票接口-发票明细信息数据校验
    CHECK_VMS_FULL_OUTINVOICEITEMS_MXXH("mxxh", "明细序号", true, 10),

    CHECK_VMS_FULL_OUTINVOICEITEMS_DYLZFPMXXH("dylzfpmxxh", "对应蓝字发票明细序号", false, 10),

    CHECK_VMS_FULL_OUTINVOICEITEMS_XMMC("xmmc", "项目名称", true, 600),

    CHECK_VMS_FULL_OUTINVOICEITEMS_GGXH("ggxh", "规格型号", false, 150),

    CHECK_VMS_FULL_OUTINVOICEITEMS_DW("dw", "单位", false, 300),

    CHECK_VMS_FULL_OUTINVOICEITEMS_SL("sl", "数量", false, 25),

    CHECK_VMS_FULL_OUTINVOICEITEMS_DJ("dj", "单价", false, 25),

    CHECK_VMS_FULL_OUTINVOICEITEMS_JE("je", "金额", true, "16,2"),

    CHECK_VMS_FULL_OUTINVOICEITEMS_SLV("slv", "增值税税率/征收率", true, "10,6"),

    CHECK_VMS_FULL_OUTINVOICEITEMS_SE("se", "税额", true, "16,2"),

    CHECK_VMS_FULL_OUTINVOICEITEMS_KCE("kce", "扣除额", false, "16,2"),

    CHECK_VMS_FULL_OUTINVOICEITEMS_SPHFWSSFLHBBM("sphfwssflhbbm", "商品和服务税收分类合并编码", true, 19),

    CHECK_VMS_FULL_OUTINVOICEITEMS_FPHXZ("fphxz", "发票行性质", true, 2),

    CHECK_VMS_FULL_OUTINVOICEITEMS_CPBM("cpbm", "产品编码", false, 50),

    CHECK_VMS_FULL_OUTINVOICEITEMS_JSFF("jsff", "计税方法", true, 2),

    CHECK_VMS_FULL_OUTINVOICEITEMS_ZSXM("zsxm", "征税项目", true, 2),

    CHECK_VMS_FULL_OUTINVOICEITEMS_YHZCBS("yhzcbs", "优惠政策标识", false, 2),

    CHECK_VMS_FULL_OUTINVOICEITEMS_CREATBY("creatBy", "创建人", true, 50),



    // 公共开票接口-发票非必填扩展信息数据校验
    CHECK_VMS_FULL_OUTINVOICEITEMS_EXP_ZZSJZJTDM("zzsjzjtdm", "增值税即征即退代码", false, 2),

    CHECK_VMS_FULL_OUTINVOICEITEMS_EXP_SGFPLXDM("sgfplxdm", "收购发票类型代码", false, 2),

    CHECK_VMS_FULL_OUTINVOICEITEMS_EXP_CKYWSYZCDM("ckywsyzcdm", "出口业务适用政策代码", false, 2),

    CHECK_VMS_FULL_OUTINVOICEITEMS_EXP_GMFDZ("gmfdz", "购买方地址", false, 300),

    CHECK_VMS_FULL_OUTINVOICEITEMS_EXP_GMFDH("gmfdh", "购买方电话", false, 60),

    CHECK_VMS_FULL_OUTINVOICEITEMS_EXP_GMFKHH("gmfkhh", "购买方开户行", false, 120),

    CHECK_VMS_FULL_OUTINVOICEITEMS_EXP_GMFZH("gmfzh", "购买方账号", false, 50),

    CHECK_VMS_FULL_OUTINVOICEITEMS_EXP_GMFJBR("gmfjbr", "购买方经办人姓名", false, 150),

    CHECK_VMS_FULL_OUTINVOICEITEMS_EXP_JBRSFZJHM("jbrsfzjhm", "购买方经办人证件号码", false, 30),

    CHECK_VMS_FULL_OUTINVOICEITEMS_EXP_GMFJBRLXDH("gmfjbrlxdh", "购买方经办人联系电话", false, 60),

    CHECK_VMS_FULL_OUTINVOICEITEMS_EXP_GMFZRRBZ("gmfzrrbz", "购买方自然人标志", false, 2),

    CHECK_VMS_FULL_OUTINVOICEITEMS_EXP_XSFDZ("xsfdz", "销售方地址", false, 300),

    CHECK_VMS_FULL_OUTINVOICEITEMS_EXP_XSFDH("xsfdh", "销售方电话", false, 60),

    CHECK_VMS_FULL_OUTINVOICEITEMS_EXP_XSFKHH("xsfkhh", "销售方开户行", false, 120),

    CHECK_VMS_FULL_OUTINVOICEITEMS_EXP_XSFZH("xsfzh", "销售方账号", false, 50),

    CHECK_VMS_FULL_OUTINVOICEITEMS_EXP_SKYHMC("skyhmc", "收款银行名称", false, 120),

    CHECK_VMS_FULL_OUTINVOICEITEMS_EXP_SKYHZH("skyhzh", "收款银行账号", false, 100),

    CHECK_VMS_FULL_OUTINVOICEITEMS_EXP_JSFS("jsfs", "结算方式", false, 2),

    CHECK_VMS_FULL_OUTINVOICEITEMS_EXP_KPRZJHM("kprzjhm", "开票人证件号码", false, 30),

    CHECK_VMS_FULL_OUTINVOICEITEMS_EXP_KPRZJLX("kprzjlx", "开票人证件类型", false, 4),

    CHECK_VMS_FULL_OUTINVOICEITEMS_EXP_SKRXM("skrxm", "收款人姓名", false, 16),

    CHECK_VMS_FULL_OUTINVOICEITEMS_EXP_FHRXM("fhrxm", "复核人姓名", false, 16),

    CHECK_VMS_FULL_OUTINVOICEITEMS_EXP_QYDM("qydm", "区域代码", true, 20),

    CHECK_VMS_FULL_OUTINVOICEITEMS_EXP_YSXWFSD("ysxwfsd", "应税行为发生地", false, 11),



    // 公共开票接口-发票附加要素信息数据校验
    CHECK_VMS_FULL_OUTINVOICEITEMS_ADD_FJYSMC("fjysmc", "附加要素名称", false, 200),

    CHECK_VMS_FULL_OUTINVOICEITEMS_ADD_FJYSLX("fjyslx", "附加要素类型", false, 200),

    CHECK_VMS_FULL_OUTINVOICEITEMS_ADD_FJYSZ("fjysz", "附加要素值", false, 200),



    // 公共开票接口-发票特定业务信息数据校验
    CHECK_VMS_FULL_OUTINVOICE_TDYW_BDCZLDZS("bdczldzS", "不动产坐落地址（省）", false, 20),

    CHECK_VMS_FULL_OUTINVOICE_TDYW_BDCZLDZS1("bdczldzS1", "不动产坐落地址（市）", false, 20),

    CHECK_VMS_FULL_OUTINVOICE_TDYW_BDCZLDZXXDZ("bdczldzXxdz", "不动产坐落地址（详细地址）", false, 80),

    CHECK_VMS_FULL_OUTINVOICE_TDYW_ZLQQZ("zlqqz", "租赁期起止", false, 40),

    CHECK_VMS_FULL_OUTINVOICE_TDYW_KDSBZ("kdsbz", "跨地（市）标志", false, 1),

    CHECK_VMS_FULL_OUTINVOICE_TDYW_CQZSBH("cqzsbh", "产权证书/不动产权证号", false, 40),

    CHECK_VMS_FULL_OUTINVOICE_TDYW_BDCDWDM("bdcdwdm", "不动产单位代码", false, 28),

    CHECK_VMS_FULL_OUTINVOICE_TDYW_WQHTBABH("wqhtbabh", "网签合同备案编号", false, 28),

    CHECK_VMS_FULL_OUTINVOICE_TDYW_TDZZSXMBH("tdzzsxmbh", "土地增值税项目编号", false, 16),

    CHECK_VMS_FULL_OUTINVOICE_TDYW_HDJSJG("hdjsjg", "核定计税价格", false, "16,2"),

    CHECK_VMS_FULL_OUTINVOICE_TDYW_SJCJHSJE("sjcjhsje", "实际成交含税金额", false, "16,2"),

    CHECK_VMS_FULL_OUTINVOICE_TDYW_MJDW("mjdw", "面积单位", false, 300),

    CHECK_VMS_FULL_OUTINVOICE_TDYW_DFGTGMBZ("dfgtgmbz", "多方共同购买标志", false, 1),

    CHECK_VMS_FULL_OUTINVOICE_TDYW_GTGMF("gtgmf", "共同购买方", false, 100),

    CHECK_VMS_FULL_OUTINVOICE_TDYW_ZJLX("zjlx", "证件类型", false, 3),

    CHECK_VMS_FULL_OUTINVOICE_TDYW_ZJHM("zjhm", "证件号码", false, 20),

    CHECK_VMS_FULL_OUTINVOICE_TDYW_CXRXH("cxrxh", "出行人序号", false, 8),

    CHECK_VMS_FULL_OUTINVOICE_TDYW_CXR("cxr", "出行人", false, 20),

    CHECK_VMS_FULL_OUTINVOICE_TDYW_CXRZJLXDM("cxrzjlxdm", "出行人证件类型", false, 20),

    CHECK_VMS_FULL_OUTINVOICE_TDYW_SFZJHM("sfzjhm", "有效身份证件号", false, 20),

    CHECK_VMS_FULL_OUTINVOICE_TDYW_CHUXRQ("chuxrq", "出行日期", false, 10),

    CHECK_VMS_FULL_OUTINVOICE_TDYW_CFD("cfd", "旅客出发地", false, 80),

    CHECK_VMS_FULL_OUTINVOICE_TDYW_DDD("ddd", "旅客到达地", false, 80),

    CHECK_VMS_FULL_OUTINVOICE_TDYW_JTGJLXDM("jtgjlxdm", "交通工具类型", false, 80),

    CHECK_VMS_FULL_OUTINVOICE_TDYW_ZWDJ("zwdj", "座位等级", false, 20),



    // web端开具发票导入-发票主信息校验
    CHECK_WEB_INVOICE_EXCEL_XH("xh", "序号", true, 0),

    CHECK_WEB_INVOICE_EXCEL_FPDM("fpdm", "发票代码", false, 8),

    CHECK_WEB_INVOICE_EXCEL_FPHM("fphm", "发票号码", false, 12),

    CHECK_WEB_INVOICE_EXCEL_SDFPHM("sdFphm", "数电发票号码", true, 20),

    CHECK_WEB_INVOICE_EXCEL_XSFNSRSBH("xsfnsrsbh", "销售方纳税人识别号", true, 20),

    CHECK_WEB_INVOICE_EXCEL_XSFMC("xsfmc", "销售方名称", true, 300),

    CHECK_WEB_INVOICE_EXCEL_GMFNSRSBH("gmfnsrsbh", "购买方纳税人识别号", false, 20),

    CHECK_WEB_INVOICE_EXCEL_GMFMC("gmfmc", "购买方名称", true, 300),

    CHECK_WEB_INVOICE_EXCEL_KPRQ("kprq", "开票日期", true, 19),

    CHECK_WEB_INVOICE_EXCEL_HJJE("hjje", "合计金额", true, "16,2"),

    CHECK_WEB_INVOICE_EXCEL_HJSE("hjse", "合计税额", true, "16,2"),

    CHECK_WEB_INVOICE_EXCEL_JSHJ("jshj", "价税合计", true, "16,2"),

    CHECK_WEB_INVOICE_EXCEL_KPR("kpr", "开票人", true, 300),

    CHECK_WEB_INVOICE_EXCEL_BZ("bz", "备注", false, 450),

    CHECK_WEB_INVOICE_EXCEL_GMFZRRBZ("gmfzrrbz", "购买方自然人标志", true, 1),



    // web端开具发票导入-发票明细信息校验
    CHECK_WEB_INVOICE_ITEM_EXCEL_XH("xh", "序号", true, 0),

    CHECK_WEB_INVOICE_ITEM_EXCEL_FPDM("fpdm", "发票代码", false, 8),

    CHECK_WEB_INVOICE_ITEM_EXCEL_FPHM("fphm", "发票号码", false, 12),

    CHECK_WEB_INVOICE_ITEM_EXCEL_SDFPHM("sdFphm", "数电发票号码", true, 20),

    CHECK_WEB_INVOICE_ITEM_EXCEL_XSFNSRSBH("xsfnsrsbh", "销售方纳税人识别号", true, 20),

    CHECK_WEB_INVOICE_ITEM_EXCEL_XSFMC("xsfmc", "销售方名称", true, 300),

    CHECK_WEB_INVOICE_ITEM_EXCEL_GMFNSRSBH("gmfnsrsbh", "购买方纳税人识别号", false, 20),

    CHECK_WEB_INVOICE_ITEM_EXCEL_GMFMC("gmfmc", "购买方名称", true, 300),

    CHECK_WEB_INVOICE_ITEM_EXCEL_KPRQ("kprq", "开票日期", true, 19),

    CHECK_WEB_INVOICE_ITEM_EXCEL_SPHFWSSFLHBBM("sphfwssflhbbm", "商品和服务税收分类合并编码", true, 19),

    CHECK_WEB_INVOICE_ITEM_EXCEL_XMMC("xmmc", "货物或应税劳务名称", true, 600),

    CHECK_WEB_INVOICE_ITEM_EXCEL_GGXH("ggxh", "规格型号", false, 150),

    CHECK_WEB_INVOICE_ITEM_EXCEL_DW("dw", "单位", false, 300),

    CHECK_WEB_INVOICE_ITEM_EXCEL_SL("sl", "数量", false, 25),

    CHECK_WEB_INVOICE_ITEM_EXCEL_DJ("dj", "单价", false, 25),

    CHECK_WEB_INVOICE_ITEM_EXCEL_JE("je", "金额", true, "16,2"),

    CHECK_WEB_INVOICE_ITEM_EXCEL_SE("se", "税额", true, "16,2"),

    CHECK_WEB_INVOICE_ITEM_EXCEL_JSHJ("jshj", "价税合计", true, "16,2"),

    CHECK_WEB_INVOICE_ITEM_EXCEL_FPLY("fply", "发票来源", true, 0),

    CHECK_WEB_INVOICE_ITEM_EXCEL_FPPZ("fppz", "发票票种", true, 0),

    CHECK_WEB_INVOICE_ITEM_EXCEL_FPZT("fpzt", "发票状态", true, 0),

    CHECK_WEB_INVOICE_ITEM_EXCEL_SFZSFP("sfzsfp", "是否正数发票", true, 1),

    CHECK_WEB_INVOICE_ITEM_EXCEL_FPFXDJ("fpfxdj", "发票风险等级", true, 0),

    CHECK_WEB_INVOICE_ITEM_EXCEL_KPR("kpr", "开票人", true, 300),

    CHECK_WEB_INVOICE_ITEM_EXCEL_BZ("bz", "备注", false, 450);


    /**
     * 类名
     */
    private String className;

    /**
     * 字段名
     */
    private String param;

    /**
     * 字段值
     */
    private String paramName;

    /**
     * 是否必填
     */
    private boolean isRequired;

    /**
     * 是否为固定格式（key：value） 例：01：投保单号、02：稀土产品
     */
    private boolean fixedFormal = false;

    /**
     * 最大长度
     */
    private int maxLength;

    /**
     * 数值格式 例：16,2 表示整数位数最大16位，小数位数最大2位
     */
    private String numberFormat;

    /**
     * 获取待转换字段
     */
    public static List<String> getFixedFormalConvertFields(String className) {
        List<String> fieldsList = new ArrayList<>();
        for (CheckParamEnum item : values()) {
            if (className.equals(item.getClassName()) && item.getFixedFormal()) {
                fieldsList.add(item.getParam());
            }
        }
        return fieldsList;
    }

    public String getClassName() {
        return className;
    }

    public void setClassName(String className) {
        this.className = className;
    }

    public String getParam() {
        return param;
    }

    public void setParam(String param) {
        this.param = param;
    }

    public String getParamName() {
        return paramName;
    }

    public void setParamName(String paramName) {
        this.paramName = paramName;
    }

    public boolean getRequired() {
        return isRequired;
    }

    public void setRequired(boolean required) {
        isRequired = required;
    }

    public boolean getFixedFormal() {
        return fixedFormal;
    }

    public void setFixedFormal(boolean fixedFormal) {
        this.fixedFormal = fixedFormal;
    }

    public int getMaxLength() {
        return maxLength;
    }

    public void setMaxLength(int maxLength) {
        this.maxLength = maxLength;
    }

    public String getNumberFormat() {
        return numberFormat;
    }

    public void setNumberFormat(String numberFormat) {
        this.numberFormat = numberFormat;
    }

    CheckParamEnum(String param, String paramName, boolean isRequired, int maxLength) {
        this.param = param;
        this.paramName = paramName;
        this.isRequired = isRequired;
        this.maxLength = maxLength;
    }

    CheckParamEnum(String param, String paramName, boolean isRequired, String numberFormat) {
        this.param = param;
        this.paramName = paramName;
        this.isRequired = isRequired;
        this.numberFormat = numberFormat;
    }

    CheckParamEnum(String param, String paramName, boolean isRequired, boolean fixedFormal, int maxLength) {
        this.param = param;
        this.paramName = paramName;
        this.isRequired = isRequired;
        this.fixedFormal = fixedFormal;
        this.maxLength = maxLength;
    }

    CheckParamEnum(String param, String paramName, boolean isRequired, boolean fixedFormal, String numberFormat) {
        this.param = param;
        this.paramName = paramName;
        this.isRequired = isRequired;
        this.fixedFormal = fixedFormal;
        this.numberFormat = numberFormat;
    }

    CheckParamEnum(String className, String param, String paramName, boolean isRequired, boolean fixedFormal, int maxLength) {
        this.className = className;
        this.param = param;
        this.paramName = paramName;
        this.isRequired = isRequired;
        this.fixedFormal = fixedFormal;
        this.maxLength = maxLength;
    }

    CheckParamEnum(String className, String param, String paramName, boolean isRequired, boolean fixedFormal, String numberFormat) {
        this.className = className;
        this.param = param;
        this.paramName = paramName;
        this.isRequired = isRequired;
        this.fixedFormal = fixedFormal;
        this.numberFormat = numberFormat;
    }

}
